/**
 * Created by charsle.
 * Date: 2017/5/24
 */
/**
 * 设置cookie
 */

let cookie = require('js-cookie');

function setCookie(cname, result) {
    cookie.set(cname, result, { expires: 1 })
    //return sessionStorage.setItem( cname, result )
}
/**
 * 获取cookie
 */
function getCookie(cname) {
    return cookie.getJSON(cname);
}
/**
 * 删除cookie
 */
function delCookie(cname) {
    cookie.remove(cname);
}

/**
 *
 *配置全局路径操作
 * @param {string} [type='']
 * @returns
 */
function evnConfigPath(type = '') {
    switch (configPath.environment) {
        case 'dev':
            if (type == 'baseURL') {
                return configPath.dev.baseURL;
            } else if (type == 'upload') {
                return configPath.dev.uploadFile;
            } else if (type == 'export') {
                return configPath.dev.exportFile;
            }
        case 'pro':
            if (type == 'baseURL') {
                return configPath.pro.baseURL;
            } else if (type == 'upload') {
                return configPath.pro.uploadFile;
            } else if (type == 'export') {
                return configPath.pro.exportFile;
            }
        case 'test':
            if (type == 'baseURL') {
                return configPath.test.baseURL;
            } else if (type == 'upload') {
                return configPath.test.uploadFile;
            } else if (type == 'export') {
                return configPath.test.exportFile;
            }
    }
}

function returnType(type) {

}

/**
 * 除去空白
 *
 * @param {*} str
 * @returns
 */
function Trim(str) {
    console.log(str);
    return str.replace(/(^\s*)|(\s*$)/g, '');
}

function tirmValidate(rule, value, callback) {
    if (!value.replace(/(^\s*)|(\s*$)/g, "")) {
        return callback(new Error('您不能能输入空格'));
    } else {
        callback();
    }
}

let reg = /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/;

function checkHttp(rule, value, callback) {
    if (value === '') {
        return callback(new Error('地址不能为空'));
    }
    setTimeout(() => {
        if (!reg.test(value)) {
            callback(new Error('请输入正确的url地址'));
        } else {
            callback();
        }
    }, 100);
}


function checkMobile(rule, value, callback) {
    let reg = /^1[3|4|5|7|8]\d{9}$/;

    if (!value) {
        return callback(new Error('手机号码不能为空'));
    }
    setTimeout(() => {
        if (!reg.test(value)) {
            callback(new Error('请输入合法的手机号码'));
        } else {
            callback();
        }
    }, 100);

}

function checkUserNum(rule, value, callback) {
    let reg = /^[1-9]\d{4}$/;

    if (!value) {
        return callback(new Error('编号码不能为空'));
    }
    setTimeout(() => {
        if (!reg.test(value)) {
            callback(new Error('请输入合法的编号,如:10001'));
        } else {
            callback();
        }
    }, 100);

}

function checkSoftSize(rule, value, callback) {
    if (!value) {
        return callback(new Error('软件大小不能为0'));
    }
    setTimeout(() => {
        if (!(/^\+?[1-9][0-9]*$/).test(value)) {
            callback(new Error('请输入大于0的数字'));
        } else {
            callback();
        }
    }, 100);
}

function checkMoney(rule, value, callback) {
    if (!value) {
        return callback(new Error('金额不能为0'));
    }
    setTimeout(() => {
        if (!(/^\+?[1-9][0-9]*$/).test(value)) {
            callback(new Error('请输入数字值'));
        } else {
            callback();
        }
    }, 100);
}

function checkEmail(rule, value, callback) {
    if (!value) {
        return callback(new Error('请输入邮箱地址'));
    }
    setTimeout(() => {
        if (!(/^[a-zA-Z0-9_.-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z]+)+/).test(value)) {
            callback(new Error('请输入有效的邮箱地址'));
        } else {
            callback();
        }
    }, 100);
}

function checkPassword(rule, value, callback) {
    if (!value) {
        return callback(new Error('请输入6~20位数字或字母为密码'));
    }
    setTimeout(() => {
        if (!(/^[0-9A-Za-z]{6,20}/).test(value)) {
            callback(new Error('请输入6~20位数字或字母'));
        } else {
            callback(); //checkPassword
        }
    }, 100);
}

function hasClass(ele, cls) {
    console.log(ele.className)
    return ele.className.match(new RegExp("(\\s|^)" + cls + "(\\s|$)"));
}
//为指定的dom元素添加样式
function addClass(ele, cls) {
    if (!this.hasClass(ele, cls)) ele.className += " " + cls;
}
//删除指定dom元素的样式
function removeClass(ele, cls) {
    if (hasClass(ele, cls)) {
        var reg = new RegExp("(\\s|^)" + cls + "(\\s|$)");
        ele.className = ele.className.replace(reg, " ");
    }
}
/**
 * 返回184天后的日期
 */
function computedDay184(baseDay = -184) {
    let dd = new Date();
    dd.setDate(dd.getDate() + baseDay);
    var y = dd.getFullYear();
    var m = (dd.getMonth() + 1) < 10 ? '0' + (dd.getMonth() + 1) : (dd.getMonth() + 1);
    var d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate();
    return y + '-' + m + '-' + d;
}
/**
 * 时间格式化
 * @param {*} date 日期
 * @param {*} fmt 格式
 */
function dateFormat(date, fmt = 'yyyy-MM-dd') {

    var _this = new Date(date)
    var o = {
        "M+": _this.getMonth() + 1, //月份 
        "d+": _this.getDate(), //日 
        "h+": _this.getHours(), //小时 
        "m+": _this.getMinutes(), //分 
        "s+": _this.getSeconds(), //秒 
        "q+": Math.floor((_this.getMonth() + 3) / 3), //季度 
        "S": _this.getMilliseconds() //毫秒 
    };
    if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (_this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
}



function getMonthList() {
    var monList = [];
    var d = new Date();
    var currYear = d.getFullYear();
    var currMon = d.getMonth(); // 获取上一个月份数值，此处不需要+1
    for (var i = 0; i < 24; i++) {
        if (currMon < 10) {
            monList.push(currYear + "-0" + currMon);
        } else {
            monList.push(currYear + "-" + currMon);
        }
        currMon -= 1; // 获取上一个月份
        if (currMon == 0) {
            currYear -= 1;
            currMon = 12;
        }
    }
    return monList;
}


function confirmDiloag(obj, callback) {
    obj._this.$confirm(obj.text, "提示", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            lockScroll: false
        })
        .then(() => {
            callback()
        }).catch(e => {})
}
const Rexports = {
    setCookie,
    getCookie,
    delCookie,
    Trim,
    tirmValidate,
    checkHttp,
    checkMobile,
    checkUserNum,
    checkSoftSize,
    checkMoney,
    checkEmail,
    checkPassword,
    hasClass,
    removeClass,
    addClass,
    computedDay184,
    dateFormat,
    evnConfigPath,
    getMonthList,
    confirmDiloag
};
module.exports = Rexports;